#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>

struct ThreadNum
{
    int thread_num_;
};

//函数指针去指定要运行的代码位置
void* MyThreadStrat(void* arg)
{
    struct ThreadNum* tn = (struct ThreadNum*)arg;
    while(1)
    {
        printf("child: %d\n", tn->thread_num_);
        sleep(5);
    }
    delete tn;
    return NULL;
}

int main()
{
    //线程信息
    pthread_t tid;
//    功能		线程
//    创建		pthread_create()
//    退出		pthread_exit()
//    等待		pthread_join()
//    取消		pthread_cancel()
//    获取ID		pthread_self()
//    调度策略	SCHED_OTHER、SCHED_FIFO、SCHED_RR
//    通信机制	信号、信号量、互斥锁、读写锁、条件变量

    for(int i = 0; i < 2; i++)
    {
        struct ThreadNum* tn = new ThreadNum;
        if(tn == NULL)
        {
            exit(1);
        }

        tn->thread_num_ = i;

        int ret = pthread_create(&tid, NULL, MyThreadStrat, (void*)tn);
        if(ret != 0)
        {
            perror("pthread_create");
            return 0;
        }
    }
    int a = 0;
    while(1)
    {
        a++;
        printf("%d------------------i am main thread\n",a);
        sleep(1);
        if(a == 10){
            break;

        }
    }
    void *ret;
    //需要自己协调线程状态
    pthread_join(tid, &ret);
    return 0;
}